<?php

class Solicitudes_IndexController extends Zend_Controller_Action {

    private $tiposolicitud;
    private $codestado;
    private $subestado;
    private $subcriterio;
    private $nav;
    
    public function init() {
	    $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
    	$this->tiposolicitud = $sesionSolicitud->tiposolicitud;
    	$this->codestado = $sesionSolicitud->codestado;
        
    	if (isset($sesionSolicitud->subestado)){
    	    $this->subestado = $sesionSolicitud->subestado;
    	}
    	if (isset($sesionSolicitud->subcriterio)){
    	    $this->subcriterio = $sesionSolicitud->subcriterio;
    	}
    	
		$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion ( "Listado de procesos", "/solicitudes/index", "Listado de procesos" );
	}
	
    public function indexAction() {
//        if (!in_array($this->tiposolicitud,array(5,6))){
            $this->_helper->redirector("lista");
//        }
    }
    
	public function listaAction() {
		$datos = array();
		
//        $codinstitucion = App_User::getCodigoInstitucion();
//	    if (empty($codinstitucion)){
//	        $this->view->priorityMessenger("ERROR de asignación de Funcionalidad", "error");
//	    }else{

		    $this->view->completitudIES = true;
	        $solicitudes = new Solicitudes_Model_Solicitudes();
	        $datos["codestado"] = $this->codestado;
			switch(App_User::getCodigoPadreRol()){
			    case Roles_Model_Roles::CODPADRE_SEDE:
//			        $NormaIes = new Instituciones_Model_Normasies();
//			        $this->view->completitudIES  =  $NormaIes->VerificarCompletitud(App_User::getCodigoInstitucion());
			        $datos["codsede"]     = App_User::getCodigoSede();
		            $datos["tipousuario"] = App_User::getTipoUsuarioSede();
		            $datos["codusuario"] = App_User::getCodigoUsuario();
	                $criterio = "SEDE";
	            break;
			    default:
			        $criterio = "CNA";
			}
			$this->view->nav = $this->nav;
			
		    $this->view->datos = $solicitudes->getSolicitudes($this->tiposolicitud,$datos,$criterio);
		    $this->view->tiposolicitud = $this->tiposolicitud;
		    
		    $this->view->mensaje_estado = "";
		    switch($this->codestado){
		        case Solicitudes_Model_Historicoprocesos::CONDICIONES_INICIALES:
		            $this->view->mensaje_estado = "A partir de esta interfaz puede ingresar la información correspondiente al programa sobre el cual desea expresar voluntad de acreditación. ";
		        break;
		        case Solicitudes_Model_Historicoprocesos::APROBADO_AUTOEVALUACION:
		            $this->view->mensaje_estado = "Debe continuar con el cronograma de actividades de autoevaluación, por lo tanto diríjase al ícono de cronograma en la columna acciones. ";
		        break;
		        case Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION:
		            $this->view->mensaje_estado = "A partir de esta interfaz puede ingresar la información correspondiente al programa sobre el cual desea elaborar el informe de autoevaluación. ";
		        break;
		        case Solicitudes_Model_Historicoprocesos::PARA_COMENTARIOS_DEL_RECTOR:
		            $this->view->mensaje_estado = "A partir de esta interfaz puede ingresar los comentarios del Rector al informe de evaluación externa, por lo tanto diríjase al ícono de ingresar comentarios del Rector en la columna acciones. ";
		        break;
		    }
    }

   	public function crearAction() {
		$solicitudes = new Solicitudes_Model_Solicitudes();
		$codinstitucion = App_User::getCodigoInstitucion();
		$datos = array("codinstitucion"=>$codinstitucion,"tiposolicitud"=>$this->tiposolicitud);
		try {
		    $solicitudes->guardarSolicitud($datos);
            $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
		} catch(Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
		}
		$this->_helper->redirector("lista");
   	}
   	
 	public function modificarAction() {
		$nav = new App_Util_Navegacion();
		$nav->agregar_navegacion("Lista de solicitudes", "/solicitudes/index/lista");
		$nav->agregar_navegacion("Modificar sesión", "");
		$this->view->nav = $nav;
		$solicitudes = new Solicitudes_Model_Solicitudes();
		$codinstitucion = App_User::getCodigoInstitucion();
		
		$form = new Solicitudes_Form_CrearSolicitud();
 	    $form->setAction($this->view->baseUrl("/solicitudes/modificar"));
		
		$codsolicitud = $this->_getParam("codsolicitud");
		if(empty($codsolicitud)) {
			$this->_helper->redirector("lista");
		}
	}
 	 public function eliminarAction() {
		$solicitudes = new Solicitudes_Model_Solicitudes();
		$codsolicitud = $this->_getParam("codsolicitud");
			
		try {
		    $solicitudes->eliminarSolicitud($codsolicitud);
            $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
		} catch(Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
		}
		$this->_helper->redirector("lista");
   	}
   	
	public function ingresarAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
    	$sesionSolicitud->codsolicitud = $this->_getParam("codsolicitud");
    	$this->_helper->redirector("basica", "detalle");
    }
   	
	public function cronogramaAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("PROCESO");
    	$sesionSolicitud->codproceso = $this->_getParam("codproceso");
    	$this->_helper->redirector("index", "cronograma");
    }
	public function autoevaluacionAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("PROCESO");
    	$sesionSolicitud->codproceso = $this->_getParam("codproceso");
    	
        $listasService = new Autoevaluacion_Model_Listas();
        $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
        $actionConfig = Zend_Registry::get("actionConfig");
        $listas = $actionConfig->LISTA_FACTORES->toArray();
        $lalista =  $listas[$sesionSolicitud->tiposolicitud];
        $sesionListas = new Zend_Session_Namespace("LISTAS");
        $sesionListas->infoLista = $listasService->getListaActiva("F",$lalista,$this->_getParam("codproceso"),"I");
//        Zend_Debug::dump($sesionListas->infoLista);
//        exit();
        if (!$sesionListas->infoLista){
            $infoLista = $listasService->getListaActiva("F",$lalista);
            $codlista = $listasService->crearListaActiva("F",$lalista,$this->_getParam("codproceso"),$infoLista["codlista"]);
            $sesionListas->infoLista = $listasService->getListaActiva("F",$codlista,$this->_getParam("codproceso"));
            $sesionListas->infoLista["codproceso"] = $this->_getParam("codproceso");
            $sesionListas->infoLista["codlista"] = $codlista;
        }
        $apreciacion = $this->_getParam("apreciacion");
        if (!empty($apreciacion)){
            $this->_helper->redirector("valoracionglobal", "detalleautoevaluacion");
//            http://localhost:81/cna/solicitudes/detalleautoevaluacion/valoracionglobal
        }else{
//        	/solicitudes/detalleautoevaluacion/index
    	    $this->_helper->redirector("index", "detalleautoevaluacion");
        }
    }
	public function preseleccionparesAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("PROCESO");
    	$sesionSolicitud->codproceso = $this->_getParam("codproceso");
    	$this->_helper->redirector("index", "preseleccionpares");
    }
	public function aceptacionparesAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("PROCESO");
    	$sesionSolicitud->codproceso = $this->_getParam("codproceso");
    	$this->_helper->redirector("index", "aceptacionpares");
    }
	public function informeparesAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("PROCESO");
    	$sesionSolicitud->codproceso = $this->_getParam("codproceso");
    	$this->_helper->redirector("index", "informepares");
    }
	public function ponenciaAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("PROCESO");
    	$sesionSolicitud->codproceso = $this->_getParam("codproceso");
    	$this->_helper->redirector("index", "ponencia");
    }
    public function acreditarpregradoAction(){
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = 1;
    	$sesionSolicitud->codestado = $this->getRequest ()->getParam( 'codestado' );
    	$this->_helper->redirector("index");
    }
    public function renovarpregradoAction(){
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = 2;
    	$sesionSolicitud->codestado = $this->getRequest ()->getParam( 'codestado' );
    	$this->_helper->redirector("index");
    }
    public function acreditarposgradoAction(){
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = 3;
    	$sesionSolicitud->codestado = $this->getRequest ()->getParam( 'codestado' );
    	$this->_helper->redirector("index");
    }
    public function renovarposgradoAction(){
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = 4;
    	$sesionSolicitud->codestado = $this->getRequest ()->getParam( 'codestado' );
    	$this->_helper->redirector("index");
    }
    public function acreditariesAction(){
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = 5;
    	$sesionSolicitud->codestado = $this->getRequest ()->getParam( 'codestado' );
    	$this->_helper->redirector("index");
    }
    public function renovariesAction(){
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = 6;
    	$sesionSolicitud->codestado = $this->getRequest ()->getParam( 'codestado' );
    	$this->_helper->redirector("index");
    }
	public function seleccionconsejeroAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("PROCESO");
    	$sesionSolicitud->codproceso = $this->_getParam("codproceso");
    	$this->_helper->redirector("index", "seleccionconsejero");
    }
    
	public function historicoprocesoAction() {
    	$codproceso = $this->getRequest ()->getParam( 'codproceso' );
    	
		$Proceso = new Solicitudes_Model_DetalleSolicitud();
        $datosproceso = $Proceso->cargardatosProceso($codproceso);

        $origen = $this->getRequest ()->getParam( 'origen' );
        
		$this->view->nav = new App_Util_Navegacion();
		$this->view->nav->agregar_navegacion("Lista de solicitudes", "/solicitudes/index/lista","Lista de solicitudes");

		$datos_param["codproceso"] = $codproceso;
		$params=App_Util_SafeUrl::encriptar($datos_param,true);
		
        switch($origen){
            case "1":
				$this->view->nav->agregar_navegacion("Preselección de pares", "/solicitudes/preseleccionpares/index/{$params}","Preselección de pares");
			break;
            case "2":
				$this->view->nav->agregar_navegacion("Preselección de pares", "/solicitudes/preseleccionpares/seleccionarpares/{$params}","Preselección de pares");
			break;
            case "3": //es llamado desde el perfil consejero al realizar la ponencia
				$this->view->nav->agregar_navegacion("Ponencia", "/solicitudes/ponencia/index/{$params}","Ponencia");
			break;
        }

		$this->view->nav->agregar_navegacion("Listado histórico del proceso", "");
    	
            $solicitudes = new Solicitudes_Model_Solicitudes();
            $datos_solicitud = $solicitudes->cargarDatos($datosproceso["codsolicitud"]);
            $datos["codsede"] = $datos_solicitud["codsede"];
            $datos["codsolicitud"] =  $datos_solicitud["codsolicitud"];
            $criterio = "SEDE";
            $this->view->datossolicitud = $solicitudes->getSolicitudes($this->tiposolicitud,$datos,$criterio);
    	
    	$historicoService = new Solicitudes_Model_Historicoprocesos();
    	$this->view->datos = $historicoService->getHistoricoProceso($codproceso);
    	
    	$this->view->tiposolicitud = $this->tiposolicitud;

    }
    
	public function verificaritinerariosAction() {
	    $tiposolicitud = $this->_getParam("tiposolicitud");
	    $tiposolicitud = empty($tiposolicitud)?1:$tiposolicitud;
	    	    
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = $tiposolicitud;
    	$sesionSolicitud->codestado = Solicitudes_Model_Historicoprocesos::CON_PARES_DESIGNADOS;
		$sesionSolicitud->subestado = 4;
    	$this->_helper->redirector("lista");
    }
    
	public function itinerariosverificadosAction() {
	    $tiposolicitud = $this->_getParam("tiposolicitud");
	    $tiposolicitud = empty($tiposolicitud)?1:$tiposolicitud;
	    	    
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = $tiposolicitud;
    	$sesionSolicitud->codestado = Solicitudes_Model_Historicoprocesos::CON_PARES_DESIGNADOS;
		$sesionSolicitud->subestado = 5;
    	$this->_helper->redirector("lista");
    }

	public function verificarviaticosAction() {
	    $tiposolicitud = $this->_getParam("tiposolicitud");
	    $tiposolicitud = empty($tiposolicitud)?1:$tiposolicitud;
	    	    
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = $tiposolicitud;
	    $sesionSolicitud->subestado = 5;
	    $sesionSolicitud->subcriterio = "viaticos";
    	$sesionSolicitud->codestado = Solicitudes_Model_Historicoprocesos::CON_PARES_DESIGNADOS;
    	$this->_helper->redirector("lista");
    }
    
	public function viaticosverificadosAction() {
	    $tiposolicitud = $this->_getParam("tiposolicitud");
	    $tiposolicitud = empty($tiposolicitud)?1:$tiposolicitud;
	    	    
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = $tiposolicitud;
    	$sesionSolicitud->codestado = Solicitudes_Model_Historicoprocesos::CON_PARES_DESIGNADOS;
	    $sesionSolicitud->subestado = 6;
	    $sesionSolicitud->subcriterio = "viaticos";
    	$this->_helper->redirector("lista");
    }

	public function verificartiquetesAction() {
	    $tiposolicitud = $this->_getParam("tiposolicitud");
	    $tiposolicitud = empty($tiposolicitud)?1:$tiposolicitud;
	    	    
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = $tiposolicitud;
	    $sesionSolicitud->subestado = 6;
	    $sesionSolicitud->subcriterio = "tiquetes";
    	$sesionSolicitud->codestado = Solicitudes_Model_Historicoprocesos::CON_PARES_DESIGNADOS;
	    
    	$this->_helper->redirector("lista");
    }
    
	public function tiquetesverificadosAction() {
	    $tiposolicitud = $this->_getParam("tiposolicitud");
	    $tiposolicitud = empty($tiposolicitud)?1:$tiposolicitud;
	    	    
    	$sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
	    $sesionSolicitud->tiposolicitud = $tiposolicitud;
    	$sesionSolicitud->codestado = Solicitudes_Model_Historicoprocesos::CON_PARES_DESIGNADOS;
	    $sesionSolicitud->subestado = 7;
	    $sesionSolicitud->subcriterio = "tiquetes";
    	$this->_helper->redirector("lista");
    }
    
   	public function guardaracreditariesAction() {
		$solicitudes = new Solicitudes_Model_Solicitudes();
		$codinstitucion = App_User::getCodigoInstitucion();
		$datos = array("codinstitucion"=>$codinstitucion,"tiposolicitud"=>$this->tiposolicitud);
		try {
		    $datos_proceso["codsolicitud"]=$solicitudes->guardarSolicitud($datos);
		    $codproceso = $solicitudes->guardarProceso($datos_proceso);
		    $serviceHistorico = new Solicitudes_Model_Historicoprocesos();
		    $codestado = ($this->tiposolicitud == 5) ? Solicitudes_Model_Historicoprocesos::CONDICIONES_INICIALES : Solicitudes_Model_Historicoprocesos ::APROBADO_AUTOEVALUACION;
		    $serviceHistorico->guardarEstadoProceso($codproceso,$codestado);
            $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
		} catch(Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
		}
		$this->_helper->redirector("lista");
   	}
   	
	public function evaluarcompletitudAction() {
    	$sesionSolicitud = new Zend_Session_Namespace("PROCESO");
    	$sesionSolicitud->codproceso = $this->_getParam("codproceso");
    	$this->_helper->redirector("index", "evaluarcompletitud");
    }
    
    public function cambiarestadoAction() {
        $this->_helper->layout()->setLayout("popup");
        
    	$codproceso = $this->getRequest ()->getParam( 'codproceso' );
    	
		$Proceso = new Solicitudes_Model_DetalleSolicitud();
        $datosproceso = $Proceso->cargardatosProceso($codproceso);
    	
        $Programa = new Programas_Model_Programas();
        $this->view->infoPrograma = $Programa->getProgramas(array("codprograma"=>$datosproceso["codprograma"]));
        
        $form = new Solicitudes_Form_Cambiarestado();
        
        $form->populate(array("codproceso"=>$codproceso,"codestado"=>$datosproceso["codestado"]));
        $this->view->form = $form;
    }

    public function guardarestadoAction(){
        $form = new Solicitudes_Form_Cambiarestado();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
                $historico = new Solicitudes_Model_Historicoprocesos();
                $datos = $this->getRequest()->getPost();
                $historico->guardarEstadoProceso($datos["codproceso"], $datos["codestado"], "","Cambio automático de estado realizado por el usuario");
                $this->view->priorityMessenger("El cambio de estado se realizó correctamente", "success");
			} catch (Exception $e) {
				echo $this->view->priorityMessenger($e->getMessage(), "error");
			}
        } else {
            $form->setStateRedirect();
        }
        $parametros["codproceso"]= $this->getRequest ()->getParam( 'codproceso' );
        $this->_helper->redirector("cambiarestado", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
    
	
    public function abririnformeAction() {
  	      try {
  	          $paresService = new Visitas_Model_ParesProceso();
  	          $codproceso = $this->getRequest ()->getParam( 'codproceso' );
  	          $paresService->abrirInformeProceso($codproceso);
			  $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $this->_helper->redirector("lista");
    }
    
    
   public function descargarrcwordAction() {
       	$informeService = new Solicitudes_Model_Informe();
		$codprograma = $this->getRequest ()->getParam( 'codprograma' );
		$html = $informeService->descargarRCWord($codprograma);
		
//   		exit();
   		
		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender(true);
		$this->getResponse()->clearBody();
		$this->getResponse()->clearAllHeaders();
	    header("Content-type: application/msword");
        header("Content-Disposition: attachment; filename=resumenrc.doc" );
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
        header("Pragma: public");
        print $html;
        exit();
    }
    
}